package com.css.fxfzdzzh.modules.basicData.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.css.fxfzdzzh.base.annotation.EntityValue;
import com.css.fxfzdzzh.base.annotation.Transform;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author Dbj
 * @date 2023年02月28日  17:15
 * 滑坡遥感影像
 */
@Data
public class SensingImage {
    /**
     * 主键
     */
    private String dssiId;

    /**
     * 名称
     */
    @EntityValue(type = "字符型", must = "是", name ="名称" , desc ="陈家滑坡" )
    @NotBlank(message = "名称不能为空")
    @Excel(name = "名称")
    @Transform
    private String name;
    /**
     * 野外编号
     */
    @EntityValue(type = "字符型", must = "是", name ="野外编号" , desc ="YJ110" )
    @NotBlank(message = "野外编号不能为空")
    @Excel(name = "野外编号")
    @Transform
    private String outdoorNum;
    /**
     * 滑坡年代
     */
    @EntityValue(type = "字符型", must = "是", name ="滑坡年代" , desc ="现代滑坡" )
    @NotBlank(message = "滑坡年代不能为空")
    @Excel(name = "滑坡年代")
    @Transform
    private String landslideTime;
    /**
     *滑坡时间年
     */
    @EntityValue(type = "字符型", must = "否", name ="滑坡时间（年）" , desc ="2010" )
    @Excel(name = "滑坡时间年")
    @Transform
    private String landslideYear;
    /**
     * 滑坡时间月
     */
    @EntityValue(type = "字符型", must = "否", name ="滑坡时间月" , desc ="06" )
    @Excel(name = "滑坡时间月")
    @Transform
    private String landslideMonth;
    /**
     * 滑坡时间日
     */
    @EntityValue(type = "字符型", must = "否", name ="滑坡时间日" , desc ="13" )
    @Excel(name = "滑坡时间日")
    @Transform
    private String landslideDay;
    /**
     * 滑坡类型
     */
    @NotBlank(message = "滑坡类型不能为空")
    @EntityValue(type = "字符型", must = "是", name ="滑坡类型" , desc ="牵引式滑坡" )
    @Excel(name = "滑坡类型")
    @Transform
    private String landslideType;
    /**
     * 滑坡性质
     */
    @NotBlank(message = "滑坡性质不能为空")
    @EntityValue(type = "字符型", must = "是", name ="滑坡性质" , desc ="岩质滑坡" )
    @Excel(name = "滑坡性质")
    @Transform
    private String landslideShape;
    /**
     * 冠
     */
    @EntityValue(type = "字符型", must = "否", name ="冠" , desc ="冠" )
    @Excel(name = "冠")
    @Transform
    private String crown;
    /**
     * 趾
     */
    @EntityValue(type = "字符型", must = "否", name ="趾" , desc ="趾" )
    @Excel(name = "趾")
    @Transform
    private String toe;
    /**
     * 经度
     */
    @EntityValue(type = "浮点型", must = "是", name ="经度" , desc ="116.33955" )
    @NotNull(message = "经度不能为空")
    @Excel(name = "经度")
    @Transform
    private BigDecimal longitude;
    /**
     * 纬度
     */
    @EntityValue(type = "浮点型", must = "是", name ="纬度" , desc ="39.91835" )
    @NotNull(message = "纬度不能为空")
    @Excel(name = "纬度")
    @Transform
    private BigDecimal latitude;
    /**
     *省
     */
    @EntityValue(type = "字符型", must = "是", name ="省" , desc ="山东省" )
    @NotNull(message = "省不能为空")
    @Excel(name = "省")
    @Transform
    private String province;
    /**
     *市
     */
    @EntityValue(type = "字符型", must = "是", name ="市" , desc ="济南市" )
    @NotNull(message = "市不能为空")
    @Excel(name = "市")
    @Transform
    private String city;
    /**
     *区县
     */
    @EntityValue(type = "字符型", must = "是", name ="区县" , desc ="市中区" )
    @NotNull(message = "区县不能为空")
    @Excel(name = "区县")
    @Transform
    private String country;
    /**
     *乡
     */
    @EntityValue(type = "字符型", must = "是", name ="乡" , desc ="清平镇" )
    @NotNull(message = "乡不能为空")
    @Excel(name = "乡")
    @Transform
    private String town;
    /**
     * 村
     */
    @EntityValue(type = "字符型", must = "是", name ="村" , desc ="南街村" )
    @NotBlank(message = "村不能为空")
    @Excel(name = "村")
    @Transform
    private String village ;
    /**
     * 地层时代
     */
    @EntityValue(type = "字符型", must = "是", name ="地层时代" , desc ="阶" )
    @NotBlank(message = "地层时代不能为空")
    @Excel(name = "地层时代")
    @Transform
    private String underAge;
    /**
     * 地层岩性
     */
    @EntityValue(type = "字符型", must = "是", name ="地层岩性" , desc ="沉积岩" )
    @NotBlank(message = "地层岩性不能为空")
    @Excel(name = "地层岩性")
    @Transform
    private String formationLithology;

    /**
     * 构造部位
     */
    @EntityValue(type = "字符型", must = "否", name ="构造部位" , desc ="伊陕斜坡" )
    @Excel(name = "构造部位")
    @Transform
    private String structuralPosition;

    /**
     * 地震烈度
     */
    @EntityValue(type = "字符型", must = "否", name ="地震烈度" , desc ="IV" )
    @Excel(name = "地震烈度")
    @Transform
    private String earthquakeIntensity;

    /**
     * 地层倾向
     */
    @EntityValue(type = "字符型", must = "否", name ="地层倾向" , desc ="背斜" )
    @Excel(name = "地层倾向")
    @Transform
    private String stratigraphicDip;

    /**
     * 地层倾角
     */
    @EntityValue(type = "字符型", must = "否", name ="地层倾角" , desc ="地层倾角" )
    @Excel(name = "地层倾角")
    @Transform
    private String stratigraphicAngle;

    /**
     * 微地貌
     */
    @EntityValue(type = "字符型", must = "否", name ="微地貌" , desc ="潮水沟" )
    @Excel(name = "微地貌")
    @Transform
    private String microrelief;

    /**
     * 相对河流位置
     */
    @EntityValue(type = "字符型", must = "否", name ="相对河流位置" , desc ="左岸" )
    @Excel(name = "相对河流位置")
    @Transform
    private String relativeRiverPosition;

    /**
     * 斜坡结构类型
     */
    @EntityValue(type = "字符型", must = "否", name ="斜坡结构类型" , desc ="顺向斜坡" )
    @Excel(name = "斜坡结构类型")
    @Transform
    private String slopeStructureType;

    /**
     * 控滑结构面类型
     */
    @EntityValue(type = "字符型", must = "否", name ="斜坡结构类型" , desc ="节理裂隙面" )
    @Excel(name = "控滑结构面类型")
    @Transform
    private String controlStructureType;

    /**
     * 控滑结构面倾向
     */
    @EntityValue(type = "字符型", must = "否", name ="斜坡结构类型" , desc ="同向缓倾" )
    @Excel(name = "控滑结构面倾向")
    @Transform
    private String controlStructureInclination;

    /**
     * 控滑结构面倾角
     */
    @EntityValue(type = "字符型", must = "否", name ="控滑结构面倾角" , desc ="控滑结构面倾角" )
    @Excel(name = "控滑结构面倾角")
    @Transform
    private String controlStructureAngle;

    /**
     * 滑坡长度
     */
    @EntityValue(type = "浮点型", must = "是", name ="滑坡长度" , desc ="120m" )
    @NotBlank(message = "滑坡长度不能为空")
    @Excel(name = "滑坡长度")
    @Transform
    private BigDecimal landslideLength;

    /**
     * 滑坡宽度
     */
    @EntityValue(type = "浮点型", must = "是", name ="滑坡宽度" , desc ="5m" )
    @NotBlank(message = "滑坡宽度不能为空")
    @Excel(name = "滑坡宽度")
    @Transform
    private BigDecimal landslideWidth;

    /**
     * 滑坡厚度
     */
    @EntityValue(type = "浮点型", must = "是", name ="滑坡厚度" , desc ="3m" )
    @NotBlank(message = "滑坡厚度不能为空")
    @Excel(name = "滑坡厚度")
    @Transform
    private BigDecimal landslideThickness;

    /**
     * 滑坡坡度
     */
    @EntityValue(type = "浮点型", must = "是", name ="滑坡坡度" , desc ="30°" )
    @NotBlank(message = "滑坡坡度不能为空")
    @Excel(name = "滑坡坡度")
    @Transform
    private BigDecimal landslideSlope;
    /**
     * 滑坡坡向
     */
    @EntityValue(type = "字符型", must = "是", name ="滑坡坡向" , desc ="东南坡°" )
    @NotBlank(message = "滑坡坡向不能为空")
    @Excel(name = "滑坡坡向")
    @Transform
    private String landslideAspect;

    /**
     * 滑坡面积
     */
    @EntityValue(type = "浮点型", must = "是", name ="滑坡面积" , desc ="1500×10'm2" )
    @NotBlank(message = "滑坡面积不能为空")
    @Excel(name = "滑坡面积")
    @Transform
    private BigDecimal landslideArea;

    /**
     * 滑坡体积
     */
    @EntityValue(type = "浮点型", must = "是", name ="滑坡体积" , desc ="5700×10'm3" )
    @NotBlank(message = "滑坡体积不能为空")
    @Excel(name = "滑坡体积")
    @Transform
    private BigDecimal landslideVolume;

    /**
     * 滑坡平面形态
     */
    @EntityValue(type = "字符型", must = "是", name ="滑坡平面形态" , desc ="滑坡平面形态" )
    @NotBlank(message = "滑坡平面形态不能为空")
    @Excel(name = "滑坡平面形态")
    @Transform
    private String landslidePlaneShape;

    /**
     * 滑坡剖面形态
     */
    @EntityValue(type = "字符型", must = "否", name ="滑坡剖面形态" , desc ="滑坡剖面形态" )
    @Excel(name = "滑坡剖面形态")
    @Transform
    private String landslideProfileShape;

    /**
     * 规模等级
     */
    @EntityValue(type = "字符型", must = "是", name ="规模等级" , desc ="规模等级" )
    @NotBlank(message = "规模等级不能为空")
    @Excel(name = "规模等级")
    @Transform
    private String scaleGrade;

    private String delFlag;

    private String createUser;

    private String createUserName;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime ;


    private String updateUser;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date updateTime;

    private String sourceFlag; // 来源：省级 1，国家级 2
    private String versionCode; // 数据版本
    @Transform
    private String geom; // 空间数据

    private String versionDesc;

    private String dataDesc;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date uploadTime;

    private static final long serialVersionUID = 1L;
}
